home *** CD-ROM | disk | FTP | other *** search
- ProWrite document format (New Horizons)
-
- TITLE: WORD (word processing FORM used by ProWrite)
-
- IFF FORM / CHUNK DESCRIPTION
- ============================
-
- Form/Chunk IDs:
- FORM WORD
- Chunks FONT,COLR,DOC,HEAD,FOOT,PCTS,PARA,TABS,PAGE,TEXT,FSCC,PINF
-
- Date Submitted: 03/87
- Submitted by: James Bayless - New Horizons Software, Inc.
-
-
- FORM
- ====
-
- FORM ID: WORD
-
- FORM Purpose: Document storage (supports color, fonts, pictures)
-
- FORM Description:
-
- This include file describes FORM WORD and its Chunks
-
- /*
- * IFF Form WORD structures and defines
- * Copyright (c) 1987 New Horizons Software, Inc.
- *
- * Permission is hereby granted to use this file in any and all
- * applications. Modifying the structures or defines included
- * in this file is not permitted without written consent of
- * New Horizons Software, Inc.
- */
-
- #include ":IFF/ILBM.h" /* Makes use of ILBM defines */
-
- #define ID_WORD MakeID('W','O','R','D') /* Form type */
-
- #define ID_FONT MakeID('F','O','N','T') /* Chunks */
- #define ID_COLR MakeID('C','O','L','R')
- #define ID_DOC MakeID('D','O','C',' ')
- #define ID_HEAD MakeID('H','E','A','D')
- #define ID_FOOT MakeID('F','O','O','T')
- #define ID_PCTS MakeID('P','C','T','S')
- #define ID_PARA MakeID('P','A','R','A')
- #define ID_TABS MakeID('T','A','B','S')
- #define ID_PAGE MakeID('P','A','G','E')
- #define ID_TEXT MakeID('T','E','X','T')
- #define ID_FSCC MakeID('F','S','C','C')
- #define ID_PINF MakeID('P','I','N','F')
-
- /*
- * Special text characters for page number, date, and time
- * Note: ProWrite currently supports only PAGENUM_CHAR, and only in
- * headers and footers
- */
-
- #define PAGENUM_CHAR 0x80
- #define DATE_CHAR 0x81
- #define TIME_CHAR 0x82
-
- /*
- * Chunk structures follow
- */
-
- /*
- * FONT - Font name/number table
- * There are one of these for each font/size combination
- * These chunks should appear at the top of the file (before document data)
- */
-
- typedef struct {
- UBYTE Num; /* 0 .. 255 */
- UWORD Size;
- /* UBYTE Name[]; */ /* NULL terminated, without ".font" */
- } FontID;
-
- /*
- * COLR - Color translation table
- * Translates from color numbers used in file to ISO color numbers
- * Should be at top of file (before document data)
- * Note: Currently ProWrite only checks these values to be its current map,
- * it does no translation as it does for FONT chunks
- */
-
- typedef struct {
- UBYTE ISOColors[8];
- } ISOColors;
-
- /*
- * DOC - Begin document section
- * All text and paragraph formatting following this chunk and up to a
- * HEAD, FOOT, or PICT chunk belong to the document section
- */
-
- #define PAGESTYLE_1 0 /* 1, 2, 3 */
- #define PAGESTYLE_I 1 /* I, II, III */
- #define PAGESTYLE_i 2 /* i, ii, iii */
- #define PAGESTYLE_A 3 /* A, B, C */
- #define PAGESTYLE_a 4 /* a, b, c */
-
- typedef struct {
- UWORD StartPage; /* Starting page number */
- UBYTE PageNumStyle; /* From defines above */
- UBYTE pad1;
- LONG pad2;
- } DocHdr;
-
- /*
- * HEAD/FOOT - Begin header/footer section
- * All text and paragraph formatting following this chunk and up to a
- * DOC, HEAD, FOOT, or PICT chunk belong to this header/footer
- * Note: This format supports multiple headers and footers, but currently
- * ProWrite only allows a single header and footer per document
- */
-
- #define PAGES_NONE 0
- #define PAGES_LEFT 1
- #define PAGES_RIGHT 2
- #define PAGES_BOTH 3
-
- typedef struct {
- UBYTE PageType; /* From defines above */
- UBYTE FirstPage; /* 0 = Not on first page */
- LONG pad;
- } HeadHdr;
-
- /*
- * PCTS - Begin picture section
- * Note: ProWrite currently requires NPlanes to be three (3)
- */
-
- typedef struct {
- UBYTE NPlanes; /* Number of planes used in picture bitmaps */
- UBYTE pad;
- } PictHdr;
-
- /*
- * PARA - New paragraph format
- * This chunk should be inserted first when a new section is started (DOC,
- * HEAD, or FOOT), and again whenever the paragraph format changes
- */
-
- #define SPACE_SINGLE 0
- #define SPACE_DOUBLE 0x10
-
- #define JUSTIFY_LEFT 0
- #define JUSTIFY_CENTER 1
- #define JUSTIFY_RIGHT 2
- #define JUSTIFY_FULL 3
-
- #define MISCSTYLE_NONE 0
- #define MISCSTYLE_SUPER 1 /* Superscript */
- #define MISCSTYLE_SUB 2 /* Subscript */
-
- typedef struct {
- UWORD LeftIndent; /* In decipoints (720 dpi) */
- UWORD LeftMargin;
- UWORD RightMargin;
- UBYTE Spacing; /* From defines above */
- UBYTE Justify; /* From defines above */
- UBYTE FontNum; /* FontNum, Style, etc. for first char in para*/
- UBYTE Style; /* Standard Amiga style bits */
- UBYTE MiscStyle; /* From defines above */
- UBYTE Color; /* Internal number, use COLR to translate */
- LONG pad;
- } ParaFormat;
-
- /*
- * TABS - New tab stop types/locations
- * Use an array of values in each chunk
- * Like the PARA chunk, this should be inserted whenever the tab settings
- * for a paragraph change
- * Note: ProWrite currently does not support TAB_CENTER
- */
-
- #define TAB_LEFT 0
- #define TAB_CENTER 1
- #define TAB_RIGHT 2
- #define TAB_DECIMAL 3
-
- typedef struct {
- UWORD Position; /* In decipoints */
- UBYTE Type;
- UBYTE pad;
- } TabStop;
-
- /*
- * PAGE - Page break
- * Just a marker -- this chunk has no data
- */
-
- /*
- * TEXT - Paragraph text (one block per paragraph)
- * Block is actual text, no need for separate structure
- * If the paragraph is empty, this is an empty chunk -- there MUST be
- * a TEXT block for every paragraph
- * Note: The only ctrl characters ProWrite can currently handle in TEXT
- * chunks are Tab and PAGENUM_CHAR, ie no Return's, etc.
- */
-
- /*
- * FSCC - Font/Style/Color changes in previous TEXT block
- * Use an array of values in each chunk
- * Only include this chunk if the previous TEXT block did not have
- * the same Font/Style/Color for all its characters
- */
-
- typedef struct {
- UWORD Location; /* Character location in TEXT chunk of change */
- UBYTE FontNum;
- UBYTE Style;
- UBYTE MiscStyle;
- UBYTE Color;
- UWORD pad;
- } FSCChange;
-
- /*
- * PINF - Picture info
- * This chunk must only be in a PCTS section
- * Must be followed by ILBM BODY chunk
- * Pictures are treated independently of the document text (like a
- * page-layout system), this chunk includes information about what
- * page and location on the page the picture is at
- * Note: ProWrite currently only supports mskTransparentColor and
- * mskHasMask masking
- */
-
- typedef struct {
- UWORD Width, Height; /* In pixels */
- UWORD Page; /* Which page picture is on (0..max) */
- UWORD XPos, YPos; /* Location on page in decipoints */
- Masking Masking; /* Like ILBM format */
- Compression Compression; /* Like ILBM format */
- UBYTE TransparentColor; /* Like ILBM format */
- UBYTE pad;
- } PictInfo;
-
- /* end */
-
-